<?php

namespace app\demo\validate;

use think\Db;

final class FormDemo extends Validate {

    protected $rule = [
        'username' => 'require',
        'password' => 'require',
    ];

    protected $message = [
        'username.require' => '[账户]不能为空',
        'password.require' => '[密码]不能为空',
    ];

    protected $scene = [
        'Test' => ['username', 'password'],
    ];

    protected function handleData(array $raw_data, $scene): array {
        $data = $raw_data;
        switch ($scene) {
            case "Test":
                // 检查username是否存在
//                $hasExist = Db::name("member")->where([
//                    ["username", "eq", $data["username"]]
//                ])->value("id");
                $hasExist = true;
                if ($hasExist) {
                    // 可通过调用方法 throw_error_json 或抛出异常 Exception 的方式设置错误信息，并返回验证失败
                    // 方式1
                    throw_error_json("[账户]已存在");
                    // 方式2
                    //throw new \Exception("[账户]已存在");
                }
                break;
        }
        return $data;
    }

}